import {QueryPage} from "@/api/common/type";

// 预算明细成本报表查询参数
export interface BudgetDetailReportQuery {
  projectId?: number; // 项目ID
  customerId?: number; // 客户ID
  personId?: number; // 业务员ID
}

// 预算明细成本报表项目
export interface BudgetDetailReportItem {
  id: number;
  type: string; // 类型：结构件核价、设备核价、提升机核价、输送件核价、电控核价、物料核价、软件核价
  name: string; // 名称
  specification: string; // 规格
  quantity: number; // 数量
  unitPrice: number; // 单价
  totalPrice: number; // 总价
  remark: string; // 备注
}

// 预算明细成本报表数据
export interface BudgetDetailReport {
  projectId?: number; // 项目ID
  projectName?: string; // 项目名称
  customerId?: number; // 客户ID
  customerName?: string; // 客户名称
  personId?: number; // 业务员ID
  personName?: string; // 业务员名称
  totalAmount?: number; // 总金额
  items?: BudgetDetailReportItem[]; // 明细项
}

// 预算单查询参数
export interface BudgetSheetQuery extends QueryPage {
  projectId?: number; // 项目ID
  customerId?: number; // 客户ID
  personId?: number; // 业务员ID
}

// 预算单数据
export interface BudgetSheet {
  id?: number;
  projectId?: number; // 项目ID
  projectName?: string; // 项目名称
  customerId?: number; // 客户ID
  customerName?: string; // 客户名称
  personId?: number; // 业务员ID
  personName?: string; // 业务员名称
  targetAmount?: number; // 目标金额
  grossMargin?: number; // 毛利率
  saleType?: string; // 销售订单类型
  integratedPlanningType?: string; // 集成规划类型
  projectAnimationVideo?: string; // 项目动画视频
  orderType?: string; // 订单类型1
  orderType2?: string; // 订单类型2
  warrantyPeriodYear?: number; // 质保期(年限)
  otherExpenses?: number; // 其他费用
  otherExpensesDetail?: string; // 其他费用详情(JSON字符串)
  deliveryPaymentDetail?: string; // 到货款详情(JSON字符串)
  installationPaymentDetail?: string; // 安装验收款详情(JSON字符串)
  nonStandardColorFee?: number; // 非标颜色费
  marketingExpenses?: string; // 营销费用
  marketingExpensesFee?: number; // 营销费用
  paymentCycle?: number; // 付款周期（天）
  proportionReceivedPaymentAmount?: number; // 到货款金额比例（%）
  paymentCycle2?: number; // 付款周期（天）2
  installationAcceptancePaymentRatio?: number; // 安装验收款比例
  warrantyPeriodMonth?: number; // 质保期（月）
  acceptanceTime?: number | string; // 承兑时间（月）
  acceptanceMoney?: number | string; // 承兑金额
  createTime?: string; // 创建时间
  updateTime?: string; // 更新时间
  createId?: number; // 创建人ID
  createName?: string; // 创建人姓名
  updateId?: number; // 更新人ID
  updateName?: string; // 更新人姓名
  warrantyMoney?: number; // 质保金
  proportionReceivedPayment?: number; // 到货款金额比例（%）
  installationAcceptancePayment?: number; // 安装验收款比例
  warrantyCost?: number; // 质保金
  acceptanceMoneyCost?: number; // 承兑金额
  salesCommissionAmount?: number;
  salesCommissionAmountRatio?: number;
  preSalesPlanningCommission?: number;
  preSalesPlanningCommissionRatio?: number;
  projectAnimationCommission?: number;
  projectAnimationCommissionRatio?: number;
  transportationCostStructuralComponents?: number;//结构件运输费
  installationFeeStructuralComponents?: number;//结构件安装费
  deviceTransportationCost?: number;//设备运输费
  transportationCostStructuralComponentsRemark?: string;//结构件运输费备注
  installationFeeStructuralComponentsRemark?: string;//结构件安装费备注
  deviceTransportationCostRemark?: string;//设备运输费备注
  urgentFee?: number; // 加急费
  discountRate?: number; // 优惠折扣(%)
  productCostDiscountFee?: number; // 产品成本优惠费用
  prepaymentRatio?: number; // 预付款比例
}

// 创建预算单请求
export interface BudgetSheetCreateDTO {
  projectId: number; // 项目ID
  customerId?: number; // 客户ID
  personId?: number; // 业务员ID
  targetAmount?: number; // 目标金额
  grossMargin?: number; // 毛利率
  saleType?: string; // 销售订单类型
  integratedPlanningType?: string; // 集成规划类型
  projectAnimationVideo?: string; // 项目动画视频
  orderType?: string; // 订单类型1
  orderType2?: string; // 订单类型2
  warrantyPeriodYear?: number; // 质保期(年限)
  otherExpenses?: number; // 其他费用
  otherExpensesDetail?: string; // 其他费用详情(JSON字符串)
  deliveryPaymentDetail?: string; // 到货款详情(JSON字符串)
  installationPaymentDetail?: string; // 安装验收款详情(JSON字符串)
  nonStandardColorFee?: number; // 非标颜色费
  marketingExpenses?: string; // 营销费用
  paymentCycle?: number; // 付款周期（天）
  proportionReceivedPaymentAmount?: number; // 到货款金额比例（%）
  paymentCycle2?: number; // 付款周期（天）2
  installationAcceptancePaymentRatio?: number; // 安装验收款比例
  warrantyPeriodMonth?: number; // 质保期（月）
  acceptanceTime?: string; // 承兑时间（月）
  acceptanceMoney?: string; // 承兑金额
  warrantyMoney?: number; // 质保金
  transportationCostStructuralComponents?: number;//结构件运输费
  installationFeeStructuralComponents?: number;//结构件安装费
  deviceTransportationCost?: number;//设备运输费
  transportationCostStructuralComponentsRemark?: string;//结构件运输费备注
  installationFeeStructuralComponentsRemark?: string;//结构件安装费备注
  deviceTransportationCostRemark?: string;//设备运输费备注
  urgentFee?: number; // 加急费
  discountRate?: number; // 优惠折扣(%)
  productCostDiscountFee?: number; // 产品成本优惠费用
}

// 更新预算单请求
export interface BudgetSheetUpdateDTO {
  id: number;
  projectId: number; // 项目ID
  customerId?: number; // 客户ID
  personId?: number; // 业务员ID
  targetAmount?: number; // 目标金额
  grossMargin?: number; // 毛利率
  saleType?: string; // 销售订单类型
  integratedPlanningType?: string; // 集成规划类型
  projectAnimationVideo?: string; // 项目动画视频
  orderType?: string; // 订单类型1
  orderType2?: string; // 订单类型2
  warrantyPeriodYear?: number; // 质保期(年限)
  otherExpenses?: number; // 其他费用
  otherExpensesDetail?: string; // 其他费用详情(JSON字符串)
  deliveryPaymentDetail?: string; // 到货款详情(JSON字符串)
  installationPaymentDetail?: string; // 安装验收款详情(JSON字符串)
  nonStandardColorFee?: number; // 非标颜色费
  marketingExpenses?: string; // 营销费用
  paymentCycle?: number; // 付款周期（天）
  proportionReceivedPaymentAmount?: number; // 到货款金额比例（%）
  paymentCycle2?: number; // 付款周期（天）2
  installationAcceptancePaymentRatio?: number; // 安装验收款比例
  warrantyPeriodMonth?: number; // 质保期（月）
  acceptanceTime?: string; // 承兑时间（月）
  acceptanceMoney?: string; // 承兑金额
  warrantyMoney?: number; // 质保金 
  transportationCostStructuralComponents?: number;//结构件运输费
  installationFeeStructuralComponents?: number;//结构件安装费
  deviceTransportationCost?: number;//设备运输费
  transportationCostStructuralComponentsRemark?: string;//结构件运输费备注
  installationFeeStructuralComponentsRemark?: string;//结构件安装费备注
  deviceTransportationCostRemark?: string;//设备运输费备注
  urgentFee?: number; // 加急费
  discountRate?: number; // 优惠折扣(%)
  productCostDiscountFee?: number; // 产品成本优惠费用
}

// 保存历史预算单请求
export interface HistoricalBudgetSheetSaveDTO {
  budgetSheetId: number; // 预算单ID
  projectId: number; // 项目ID
  content: string; // 预算单HTML内容
} 